Pourquoi gérer les exceptions ? Les exceptions permettent de gérer les erreurs de manière élégante et d'éviter que le programme ne plante brutalement.
1. Gestion des Exceptions de Base
Python utilise les blocs try/except pour capturer et gérer les exceptions.
try:
nombre = int(input("Entrez un nombre: "))
resultat = 10 / nombre
print("Résultat:", resultat)
except ZeroDivisionError:
print("Erreur: Division par zéro impossible!")
except ValueError:
print("Erreur: Vous devez entrer un nombre valide!")
except Exception as e:
print(f"Une erreur inattendue s'est produite: {e}")
else:
print("Calcul réussi!")
finally:
print("Fin de l'opération.")
def verifier_age(age):
if age < 0:
raise ValueError("L'âge ne peut pas être négatif!")
elif age < 18:
raise PermissionError("Vous devez avoir au moins 18 ans.")
else:
return True
try:
verifier_age(-5)
except ValueError as e:
print("Erreur:", e)
2. Création d'Exceptions Personnalisées
Vous pouvez créer vos propres exceptions pour des cas spécifiques.
class SoldeInsuffisantError(Exception):
def __init__(self, solde, montant):
self.solde = solde
self.montant = montant
message = f"Solde insuffisant! Solde: {solde}, Montant demandé: {montant}"
super().__init__(message)
class CompteBancaire:
def __init__(self, solde_initial):
self.solde = solde_initial
def retirer(self, montant):
if montant > self.solde:
raise SoldeInsuffisantError(self.solde, montant)
self.solde -= montant
return self.solde
compte = CompteBancaire(1000)
try:
compte.retirer(1500)
except SoldeInsuffisantError as e:
print("Erreur bancaire:", e)
3. Lecture et Écriture de Fichiers
| Mode |
Description |
'r' |
Lecture seule (défaut) |
'w' |
Écriture (écrase le fichier existant) |
'a' |
Ajout à la fin du fichier |
'x' |
Création exclusive (erreur si existe) |
'b' |
Mode binaire (ex: 'rb', 'wb') |
'+' |
Lecture et écriture (ex: 'r+', 'w+') |
with open("exemple.txt", "w", encoding="utf-8") as fichier:
fichier.write("Ligne 1\n")
fichier.write("Ligne 2\n")
fichier.write("Ligne 3\n")
fichier.writelines(["Ligne 4\n", "Ligne 5\n"])
print("Fichier écrit avec succès!")
with open("exemple.txt", "r", encoding="utf-8") as fichier:
print("Contenu du fichier:")
for ligne in fichier:
print(ligne.strip())
with open("exemple.txt", "r", encoding="utf-8") as fichier:
contenu = fichier.read()
print("\nContenu complet:")
print(contenu)
Meilleure pratique : Toujours utiliser with open() pour gérer les fichiers. Cela garantit que le fichier est correctement fermé même en cas d'erreur.
4. Fichiers JSON et CSV
Python dispose de modules pour travailler avec des formats de fichiers courants.
import json
donnees = {
"nom": "Alice",
"age": 25,
"ville": "Paris",
"competences": ["Python", "JavaScript", "SQL"]
}
with open("donnees.json", "w", encoding="utf-8") as fichier:
json.dump(donnees, fichier, indent=4, ensure_ascii=False)
with open("donnees.json", "r", encoding="utf-8") as fichier:
donnees_chargees = json.load(fichier)
print("Données chargées:", donnees_chargees)
print("Nom:", donnees_chargees["nom"])
import csv
donnees_etudiants = [
["Nom", "Age", "Note"],
["Alice", "25", "A"],
["Bob", "22", "B"],
["Claire", "24", "A+"]
]
with open("etudiants.csv", "w", newline="", encoding="utf-8") as fichier:
writer = csv.writer(fichier)
writer.writerows(donnees_etudiants)
with open("etudiants.csv", "r", encoding="utf-8") as fichier:
reader = csv.reader(fichier)
for ligne in reader:
print(ligne)
Attention : Les fichiers CSV peuvent contenir des virgules dans les données. Utilisez le module csv pour gérer correctement ces cas.